package com.llyb.chap09;

import java.util.concurrent.atomic.AtomicInteger;

//不使用同步锁，而是使用CAS也可以保证原子性。保证单行代码的原子性。多行代码依然需要同步锁。
class DataOne {

    //volatile不能保证原子性
    private AtomicInteger number = new AtomicInteger(0);

    public Integer incr() {
        return number.incrementAndGet(); //JUC提供原子整型类，可以保证加加操作安全。乐观锁-CAS
    }
}

public class VolatileAtomicDemo {

    public static void main(String[] args) {

        DataOne dataOne = new DataOne();

        for (int i = 0; i < 1000; i++) {
            new Thread(() -> {
                System.out.println(dataOne.incr());
            }).start();
        }
    }
}
